import 'package:lolo/auxiliary/text.dart';

import 'decline.dart';

/// 负责检查用户输入格式是否正确，如果不正确，则抛出[Decline]
///
/// 和软件内部的check不同，它主要的目的是根据不同的错误，告诉用户应该怎么做
class InputCheck {
  static void mobile(String input) {
    if (!input.isPureNumber) throw Decline("手机号只能是纯数字（目前默认+86国内手机号，暂不支持国际号码）");
    if (input.length != 11) throw Decline("手机号长度应该为11位数");
    if (!input.startsWith("1")) throw Decline("手机号要以数字1开头，现在还没有其他数字开头的号码");
  }

  static void sms(String sms) {
    if (!sms.isPureNumber) throw Decline("验证码必须为纯数字");
    if (sms.length != 6) throw Decline("验证码必须为6位数");
  }
}

extension Check on Map {
  contain(List<String> fields) {
    for (String field in fields) {
      assert(containsKey(field), "缺少field:$field");
      if (!containsKey(field)) throw Decline("缺少field:$field");
    }
  }
}
